print('Hello Python!')
print('\n'.join([' '.join(["%2s x%2s = %2s"%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))
print(''.join(__import__('random').choice('\u2571\u2572') for i in range(50*24)))
import turtle
import time
turtle.pensize(3)
turtle.speed(0)
turtle.bgcolor("black")
colors = ["red","yellow",'purple','blue']
for x in range (400):
turtle.forward(2*x)
turtle.color(colors[x % 4])
turtle.left(92)
turtle.tracer(True)
turtle.done()
from MyQR import myqr
myqr.run(words='https://haiercell.haierfhtech.com/#/')
myqr.run(
words='https://haiercell.haierfhtech.com/#/', # 包含信息
picture='pic/cell.jpg', # 背景图片
colorized=True, # 是否有颜色,如果为False则为黑白
save_name='qrcode.png' # 输出文件名
)
import pandas as pd
df = pd.DataFrame(pd.read_excel('doc/运维问题跟踪表.xlsx'))
df
high = df.loc[(df['发现日期'] >= '2020-01-01') & (df['重要度'] >= '高')]
high
high.to_excel('high.xlsx',index = False)
from pandasql import sqldf
pysqldf = lambda sql: sqldf(sql, globals())
sql = "select 项目名称,count(项目名称) as 数量 from df where 发现日期 >= '2020-01-01' group by 项目名称"
data = pysqldf(sql)
data
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi']
exploda = (0.1, 0, 0, 0, 0, 0)
plt.pie(data['数量'], labels=data['项目名称'], autopct='%1.1f%%', explode = exploda, shadow = True,startangle=90)
plt.title('系统BUG分布', fontsize=18)
import seaborn as sns
# 数据准备
iris = sns.load_dataset('iris')
# 用 Seaborn 画成对关系
sns.pairplot(iris)
plt.show()
# 数据准备
tips = sns.load_dataset("tips")
print(tips.head(10))
# 用 Seaborn 画二元变量分布图(散点图,核密度图,Hexbin 图)
sns.jointplot(x="total_bill", y="tip", data=tips, kind='scatter')
sns.jointplot(x="total_bill", y="tip", data=tips, kind='kde')
sns.jointplot(x="total_bill", y="tip", data=tips, kind='hex')
plt.show()
from pyecharts import options as opts
from pyecharts.charts import Funnel
from pyecharts.faker import Faker
c = (
Funnel()
.add(
"商品",
[list(z) for z in zip(Faker.choose(), Faker.values())],
label_opts=opts.LabelOpts(position="inside"),
)
.set_global_opts(title_opts=opts.TitleOpts(title="商品漏斗图"))
.render("商品漏斗.html")
)
print("已生成")
import json
import requests
import pandas as pd
from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType, ChartType
reponse = requests.get('https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5').json()
data = json.loads(reponse['data'])
province = []
confirm = []
for item in data['areaTree'][0]['children']:
province.append(item['name'])
confirm.append(item['total']['confirm'])
china_data = pd.DataFrame({"province": province, "confirm": confirm})
dicts_all = {'黑龙江': [127.9688, 45.368], '上海': [121.4648, 31.2891],
'内蒙古': [110.3467, 41.4899], '吉林': [125.8154, 44.2584],
'辽宁': [123.1238, 42.1216], '河北': [114.4995, 38.1006],
'天津': [117.4219, 39.4189], '山西': [112.3352, 37.9413],
'陕西': [109.1162, 34.2004], '甘肃': [103.5901, 36.3043],
'宁夏': [106.3586, 38.1775], '青海': [101.4038, 36.8207],
'新疆': [87.9236, 43.5883], '西藏': [91.11, 29.97],
'四川': [103.9526, 30.7617], '重庆': [108.384366, 30.439702],
'山东': [117.1582, 36.8701], '河南': [113.4668, 34.6234],
'江苏': [118.8062, 31.9208], '安徽': [117.29, 32.0581],
'湖北': [114.3896, 30.6628], '浙江': [119.5313, 29.8773],
'福建': [119.4543, 25.9222], '江西': [116.0046, 28.6633],
'湖南': [113.0823, 28.2568], '贵州': [106.6992, 26.7682],
'广西': [108.479, 23.1152], '海南': [110.3893, 19.8516],
'广东': [113.28064, 23.125177], '北京': [116.405289, 39.904987],
'云南': [102.71225, 25.040609], '香港': [114.165460, 22.275340],
'澳门': [113.549130, 22.198750], '台湾': [121.5200760, 25.0307240]}
for item in [list(z) for z in zip(china_data['province'], china_data['confirm'])]:
dicts_all[item[0]].append(item[1])
(Map3D()
.add_schema(
itemstyle_opts=opts.ItemStyleOpts(
color="rgb(5,101,123)",
opacity=1,
border_width=0.8,
border_color="rgb(62,215,213)"),
map3d_label=opts.Map3DLabelOpts(
is_show=False,
formatter=JsCode(
"function(data){return data.name + " " + data.value[2];}")),
emphasis_label_opts=opts.LabelOpts(
is_show=False,
color="#fff",
font_size=10,
background_color="rgba(0,23,11,0)"),
light_opts=opts.Map3DLightOpts(
main_color="#fff",
main_intensity=1.2,
main_shadow_quality="high",
is_main_shadow=False,
main_beta=10,
ambient_intensity=0.3))
.add(
series_name="bar3D",
data_pair=list(zip(list(dicts_all.keys()), list(dicts_all.values()))),
type_=ChartType.BAR3D,
bar_size=1,
shading="lambert",
label_opts=opts.LabelOpts(
is_show=True,
formatter=JsCode(
"function(data){return data.name + ' ' + data.value[2];}")))
.set_global_opts(title_opts=opts.TitleOpts(title="COVID-全国疫情分布图"))).render("全国疫情分布图.html")
import jieba
import wordcloud
from imageio import imread
img = imread('doc/sango.png')
def get_text():
f = open('doc/sango.txt','r',encoding='utf-8').read()
return ' '.join([i for i in jieba.lcut(f) if len(i)!= 1])
w = wordcloud.WordCloud(font_path=r'C:\WINDOWS\Fonts\msyh.ttc',width=1080,height=768,background_color='white',mask=img)
w.generate(get_text())
w.to_file('wordcloud.jpg')
import requests
INDEX_URL = 'https://dynamic1.scrape.cuiqingcai.com/api/movie/?limit=10&offset=0'
print(requests.get(INDEX_URL).json())
from selenium import webdriver
browser = webdriver.Chrome(executable_path='D:\chromedriver.exe')
browser.get("https://www.baidu.com")
inputs = browser.find_element_by_id("kw")
inputs.send_keys("Python")
browser.find_element_by_id("su").click()
Chromium是谷歌为了研发Chrome而启动的项目,是完全开源的。二者基于相同的源代码构建,Chrome所有的新功能都会先在Chromium上实现,待验证稳定后才会移植,因此 Chromium 的版本更新频率更高,也会包含很多新的功能,但作为一款独立的浏览器,Chromium 的用户群体要小众得多。两款浏览器“同根同源”,它们有着同样的 Logo,但配色不同,Chrome 由蓝红绿黄四种颜色组成,而 Chromium 由不同深度的蓝色构成。
Pyppeteer就是依赖于Chromium这个浏览器来运行的。那么有了Pyppeteer之后,我们就可以免去那些烦琐的环境配置等问题。如果第一次运行的时候,Chromium浏览器没有安装,Chromium 浏览器没有安装,那么程序会帮我们自动安装和配置,就免去了烦琐的环境配置等工作。另外 Pyppeteer 是基于 Python 的新特性
async 实现的,所以它的一些执行也支持异步操作,效率相对于 Selenium 来说也提高了。
requests同步方式
import requests
import time
TOTAL_NUMBER = 5
BASE_URL = 'https://static4.scrape.cuiqingcai.com/detail/{id}'
start_time = time.time()
for id in range(1, TOTAL_NUMBER + 1):
url = BASE_URL.format(id=id)
print(f'scraping {url}', )
response = requests.get(url)
end_time = time.time()
print(f'\ntotal time {round((end_time - start_time),2)} seconds')
aiohttp 异步方式
import asyncio
import aiohttp
import nest_asyncio
nest_asyncio.apply()
start = time.time()
async def get(url):
session = aiohttp.ClientSession()
response = await session.get(url)
await response.text()
await session.close()
return response
async def request(id):
url = f'https://static4.scrape.cuiqingcai.com/detail/{id}'
print('Waiting for', url)
response = await get(url)
print('Get response from', url, 'response')
tasks = [asyncio.ensure_future(request(i + 1)) for i in range(5)]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
end = time.time()
print(f'\ntotal time {round((end - start),2)} seconds')
500个请求访问[百度]
def test(number):
start = time.time()
async def get(url):
session = aiohttp.ClientSession()
response = await session.get(url)
await response.text()
await session.close()
return response
async def request():
url = 'http://www.baidu.com'
await get(url)
tasks = [asyncio.ensure_future(request()) for _ in range(number)]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
end = time.time()
print(f'Number:{number}, Cost time:{round((end - start),2)} seconds')
for number in [10, 50, 75, 100, 200, 500]:
test(number)
import requests
dir = 'xqImg/'
url = 'http://www.7799520.com/api/user/pc/list/search?startage=21&endage=30&gender=2&startheight=151&endheight=160&marry=1&salary=3&page='
for i in range(10):
jsonData = requests.get(url + str(i+1)).json()
for j in jsonData['data']['list']:
imgUrl = j['avatar']
#发送网络请求
resp = requests.get(imgUrl)
#创建图片文件,并将流写入图片
img = open(dir + j['username'] + '.jpg', 'wb')
img.write(resp.content)
print('爬取完成')
from PIL import Image
import pytesseract
# 验证码识别
code = pytesseract.image_to_string(Image.open('pic/code.jpg'), lang='eng')
code
# 中文识别
life = pytesseract.image_to_string(Image.open('pic/人生苦短我用Python.jpg'), lang='chi_sim')
life
任何编程语言都有缺点,Python也不例外。优点说过了,那Python有哪些缺点呢?
第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。
第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。
这个缺点仅限于你要编写的软件需要卖给别人挣钱的时候。好消息是目前的互联网时代,靠卖软件授权的商业模式越来越少了,靠网站和移动应用卖服务的模式越来越多了,后一种模式不需要把源码给别人。
Python还有其他若干小缺点,请自行忽略,就不一一列举了。